home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / program / nwstrn11.lha / NewString11 / demo.c < prev    next >
C/C++ Source or Header  |  1995-12-12  |  7KB  |  229 lines

  1. #include <proto/exec.h>
  2. #include <proto/intuition.h>
  3. #include <proto/bgui.h>
  4. #include <clib/alib_protos.h>
  5. #include <Libraries/bgui.h>
  6. #include <libraries/bgui_macros.h>
  7. // *** Change bellow with your path ***
  8. #include <bgui/Hook/StringHook.h>
  9. #include "NewString_macros.h"
  10. #include <stdio.h>
  11.  
  12. #ifdef _DCC
  13. #include <Lib/Misc.h>
  14. #endif
  15.  
  16. struct Library *BGUIBase;
  17.  
  18. /*
  19. **  Prototypes
  20. **/
  21. ULONG Req( struct Window *, UBYTE *, UBYTE *, UBYTE *, ... );
  22.  
  23. /*
  24. **  ID of gadgets
  25. **/
  26. enum {
  27.  
  28.     GD_NORMAL_STR,
  29.     GD_NORMAL_BUT,
  30.     GD_NEWSTR_STR,
  31.     GD_NEWSTR_BUT,
  32.  
  33.     GD_GAD1,
  34.     GD_GAD2,
  35.     GD_GAD3,
  36.  
  37.     GD_STR_COMMAND,
  38.     GD_BUTMODE,
  39.  
  40.     GAD_CNT,
  41.  
  42.     MN_ABOUT
  43. };
  44.  
  45. /*
  46. **  Datas for GUI
  47. **/
  48. Object  *WO_Main;
  49. ULONG   MainMask;
  50. struct  Window  *MainWnd;
  51. Object  *MainGad[ GAD_CNT ];
  52.  
  53. // Menus for windows
  54. struct NewMenu  Menus[] =
  55. {
  56.     Title( "Project " ),
  57.         Item( "About...", "?", MN_ABOUT ),
  58.         ItemBar,
  59.         Item( "Quit", "Q", WMHI_CLOSEWINDOW ),
  60.     End
  61. };
  62.  
  63.  
  64.  
  65. /*
  66. **  Main entry
  67. **/
  68. int main( int argc, char **argv )
  69. {
  70. BOOL done=TRUE;
  71. int rc;
  72. ULONG   t;
  73.  
  74.     /*
  75.     **  Open the bgui.library.
  76.     **/
  77.     if( !( BGUIBase = OpenLibrary( "bgui.library", 37 ) ))
  78.     {
  79.         printf("This demo need the bgui.library  :-(\n");
  80.         return(30);
  81.     }
  82.  
  83.     /*
  84.     **  Create the window;
  85.     **/
  86.     WO_Main = WindowObject,
  87.                 WINDOW_Title,           "Demo of String hook",
  88.                 WINDOW_ScaleWidth,      20,
  89.                 WINDOW_AutoAspect,      TRUE,
  90.                 WINDOW_LockHeight,      TRUE,
  91.                 WINDOW_MenuStrip,       Menus,
  92.                 WINDOW_SmartRefresh,    TRUE,
  93.                 WINDOW_CloseOnEsc,      TRUE,
  94.                 WINDOW_MasterGroup,
  95.  
  96.                 VGroupObject, VOffset( 2 ), HOffset( 4 ), Spacing( 4 ),
  97.  
  98.                 StartMember, VGroupObject, NeXTFrame, FrameTitle( "Repair bug" ), HOffset( 4+2 ), VOffset( 4 ), Spacing( 4 ),
  99.  
  100.                     StartMember, VGroupObject, NeXTFrame, FrameTitle( "Normal string (type 5 chars. and affect-it)"), HOffset( 4+4 ), BOffset( 4 ), TOffset( 2 ), Spacing( 2 ),
  101.                         StartMember, MainGad[ GD_NORMAL_STR ] = String( NULL, "12345", 5, GD_NORMAL_STR ), EndMember,
  102.                         StartMember, MainGad[ GD_NORMAL_BUT ] = Button( "Re-Affect the string contents", GD_NORMAL_BUT ), EndMember,
  103.                     EndObject, FixMinHeight, EndMember,
  104.  
  105.                     StartMember, VGroupObject, NeXTFrame, FrameTitle( "New String (type 5 chars. and affect-it)"), HOffset( 4+4 ), BOffset( 4 ), TOffset( 2 ), Spacing( 2 ),
  106.                         StartMember, MainGad[ GD_NEWSTR_STR ] = NewString( NULL, "12345", 5, GD_NEWSTR_STR ), EndMember,
  107.                         StartMember, MainGad[ GD_NEWSTR_BUT ] = Button( "Re-Affect the string contents", GD_NEWSTR_BUT ), EndMember,
  108.                     EndObject, FixMinHeight, EndMember,
  109.  
  110.                 EndObject, EndMember,
  111.  
  112.  
  113.  
  114.                 StartMember, HGroupObject, Spacing( 4 ),
  115.  
  116.                     StartMember, VGroupObject, NeXTFrame, FrameTitle( "Return-cycle" ), HOffset( 4+2 ), VOffset( 4 ), Spacing( 4 ),
  117.                         StartMember, MainGad[GD_GAD1] = NewStringReturn( "Gad #1", "Gadget 1", 15, 0 ), FixMinHeight, EndMember,
  118.                         VarSpace( 1 ),
  119.                         StartMember, MainGad[GD_GAD2] = NewStringReturn( "Gad #2", "Gadget 2", 15, 0 ), FixMinHeight, EndMember,
  120.                         VarSpace( 1 ),
  121.                         StartMember, MainGad[GD_GAD3] = NewStringReturn( "Gad #3", "Gadget 3", 15, 0 ), FixMinHeight, EndMember,
  122.                     EndObject, EndMember,
  123.  
  124.                     StartMember, VGroupObject, NeXTFrame, FrameTitle( "Enable Amiga Command" ), HOffset( 4+2 ), VOffset( 4 ), Spacing( 4 ),
  125.                          StartMember, MainGad[GD_STR_COMMAND] = NewStringCommand( NULL, "Perform Shorcut", 30, GD_STR_COMMAND ), FixMinHeight, EndMember,
  126.                          //VarSpace( 1 ),
  127.                          StartMember, MainGad[GD_BUTMODE] = KeyButton( "_Mode", GD_BUTMODE ), /*FixMinHeight,*/ EndMember,
  128.                     EndObject, EndMember,
  129.  
  130.                 EndObject, EndMember,
  131.  
  132.                 EndObject,
  133.  
  134.                 EndObject;
  135.  
  136.     /*
  137.     **  Set TAB-CYCLE and RETURN-CYCLE
  138.     **/
  139.     DoMethod( WO_Main, WM_TABCYCLE_ORDER, MainGad[GD_GAD1], MainGad[GD_GAD2], MainGad[GD_GAD3], TAG_END );
  140.  
  141.     GadgetKey( WO_Main, MainGad[GD_BUTMODE], "M" );
  142.  
  143.     /*
  144.     **  Open the window.
  145.     **/
  146.     MainWnd= WindowOpen( WO_Main );
  147.  
  148.     GetAttr( WINDOW_SigMask, WO_Main, &MainMask );
  149.  
  150.     if( WO_Main && MainWnd )
  151.  
  152.     /*
  153.     **  Handle window.
  154.     **/
  155.     do{
  156.  
  157.         Wait( MainMask );
  158.  
  159.         while (( rc = HandleEvent( WO_Main )) != WMHI_NOMORE )
  160.         {
  161.             switch ( rc )
  162.             {
  163.                 case    WMHI_CLOSEWINDOW:   done = FALSE;
  164.                                             break;
  165.  
  166.                 case    GD_NORMAL_BUT:      GetAttr( STRINGA_TextVal, MainGad[ GD_NORMAL_STR ], &t );
  167.                                             SetGadgetAttrs( (struct Gadget *)MainGad[ GD_NORMAL_STR ], MainWnd, NULL, STRINGA_TextVal, t, TAG_END );
  168.                                             break;
  169.  
  170.                 case    GD_NEWSTR_BUT:      GetAttr( STRINGA_TextVal, MainGad[ GD_NEWSTR_STR ], &t );
  171.                                             SetGadgetAttrs( (struct Gadget *)MainGad[ GD_NEWSTR_STR ], MainWnd, NULL, STRINGA_TextVal, t, TAG_END );
  172.                                             break;
  173.  
  174.                 case    GD_BUTMODE:         ActivateGadget( (struct Gadget *)MainGad[GD_STR_COMMAND], MainWnd, NULL );
  175.                                             break;
  176.  
  177.                 case    MN_ABOUT:           Req( MainWnd, NULL, "*_Ok", "About requester..." );
  178.                                             break;
  179.  
  180.             }
  181.         }
  182.  
  183.     } while( done );
  184.  
  185.  
  186.     /*
  187.     **  Dispose window and its gadgets
  188.     **/
  189.     if( WO_Main )   DisposeObject( WO_Main );
  190.  
  191.     /*
  192.     **  Close the bgui.library
  193.     **/
  194.     CloseLibrary( BGUIBase );
  195.  
  196.     return(0);
  197. }
  198.  
  199. #ifdef _DCC
  200. int wbmain( struct WBStartup *w )
  201. {
  202.     return( main( 0, NULL ) );
  203. }
  204. #endif
  205.  
  206.  
  207.  
  208. /*
  209. **  Requester
  210. **/
  211. /// ULONG Req( struct Window *win, UBYTE *Title, UBYTE *gadgets, UBYTE *body, ... )
  212. ULONG Req( struct Window *win, UBYTE *Title, UBYTE *gadgets, UBYTE *body, ... )
  213. {
  214. struct bguiRequest req={NULL};
  215.  
  216.  
  217.         req.br_GadgetFormat     = gadgets;
  218.         req.br_TextFormat       = body;
  219.         req.br_Underscore       = '_';
  220.         req.br_Flags            = BREQF_CENTERWINDOW|BREQF_AUTO_ASPECT| BREQF_FAST_KEYS;
  221.         if( win )
  222.             req.br_Flags        |= BREQF_LOCKWINDOW;
  223.         req.br_Title            = Title;
  224.  
  225.         return( BGUI_RequestA( win, &req, ( ULONG * )( &body + 1 )));
  226. }
  227. ///
  228.  
  229.